<?php

namespace app\index\controller;

use common\Common;
use think\Controller;
use think\Db;

class Index extends Controller
{



    public function index()
    {
        if ($this->request->isPost()) {
            //判断是否有 POST 请求数据，有就处理数据，没有就显示添加表单页面
            if ($_FILES['img']['size']) {//判断是否有图片上传，有则上传图片，没有则使用默认图片
                //获得图片的路径并保存到$data['imgpath']中
                $data['imgpath'] = $this->upload();
            } else {
                $data['imgpath'] = 'default.jpg';
            }
        //获取商品名并保存到$data['gname']中
            $data['gname'] = $_POST['gname'];
            //实例化 ginfo 表模型类并调用 add 方法向数据库添加商品信息
            $res = Db::name('up_ginfo')->insert($data);
            if ($res) {
                //上传成功跳转到商品列表页面

                $this->success('修改成功，请稍等...', url('lst'));
                return;
            }
            $this->error();
        }
        return $this->fetch();
    }

    public function upload()
    {

//        $upload = new \Think\Upload();//实例化 TP 框架的文件上传类
//        $upload->maxSize = 3145728;//配置上传文件的大小
//        $upload->rootPath = './public/uploads/';//配置文件上传的根目录
//        $upload->exts = array('jpg', 'gif', 'png', 'jpeg');//配置上传文件的格式
//        $info = $upload->uploadOne();//调用 TP 文件上传方法
//        if (!$info) {//判断文件是否上传成功
//            $this->error($upload->getError());
//            return;
//        }
////将成功上传的文件的路径保存到$path 中并返回
//        $path = $info['savepath'] . $info['savename'];
//        return $path;
        // 获取表单上传文件 例如上传了001.jpg

        // 移动到框架应用根目录/uploads/ 目录下
        $file = request()->file('img');
        //校验器，判断图片格式是否正确
        $info = $file->move( '../uploads');
        if($info){
            // 成功上传后 获取上传信息
            // 输出 jpg
            $path = $info->getSaveName();
            return $path;
        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }
}

    public function lst()
    {
//实例化 ginfo 表模型类并调用 select 方法获取所有商品数据
        $infos = Db::table('up_ginfo')->select();
//为视图文件分配变量数据
        $this->assign('infos', $infos);
//调用视图页面
        return $this->fetch();
    }

    public function revise($gid)
    {
        //$gid = $_REQUEST['gid'];//获取商品 id
        $info = Db::table('up_ginfo')->where("gid=$gid")->find();//根据商品id 获取商品详细信息
        $this->assign('info', $info);
        return $this->fetch();

    }

    public function update()
    {
        if ($_FILES['img']['size']) {
            //判断是否上传了图片，是则执行上传操作，不是则跳过
            $data['imgpath'] = $this->upload();
        }
//将更新数据以数组的形式保存到$data 中
        $data['gname']= $_POST['gname'];
//将更新条件以数组形式保存到$where 中
        $where= $_POST['gid'];
//实例化 ginfo 模型类并执行 save 操作
        $res = Db::table('up_ginfo')
            ->where('gid',$where)->update(

            $data

        );
        if ($res) {//判断更新操作是否成功，是则跳转到商品列表页面
            $this->success('修改成功，请稍等...', url('lst'));
            return;
        }
        $this->error();
    }

    public function _before_update()
    {
        if ($_FILES['img']['size']) {
            //判断是否选择了新的图片，是则根据商品 id 获取原图地址，执行 unlink 函数销毁原图，不是则直接跳过
            $where['gid'] = $_GET['gid'];
            $imgpath =
                D('ginfo')->where($where)->getField('imgpath');
            if ($imgpath) {
                $imgurl = './uploads/' . $imgpath;
                $res = unlink($imgurl);
                if (!$res) {
                    $this->error('删除原图失败');
                }
            }
        }
    }

}
